require.config({　　　　
    paths: {　　　　　　
        "cache": "/public/lib/cache",
    }
});

require(['cache'], function (cache) {
    // debugger;
    cache.ready();
    var token = (cache.go("token") === 'undefined') ? 'none' : cache.go("token");
    $("#modify").click(function () {
        debugger;
        if (!checkPwd()) {
            return false;
        }
        $.ajax({
            url: "/api/account/changepwd",
            type: 'POST',
            beforeSend: function (xhr) {
                xhr.setRequestHeader("X-AuthToken", token);
            },
            contentType: "application/x-www-form-urlencoded",
            data: $("form").serialize(),
            success: function (data, status, xhr) {
                if (!data.success) {
                    removeOriginalPwdDialog();
                    tipDialog("originalPwd", data.data, document.getElementById("originalPwd"));
                    // setTimeout(function() {
                    //     dialog.get("originalPwd").close().remove();
                    // }, 1500);
                    return;
                }
                if (parent.document.getElementsByTagName("iframe").length > 0) {
                    dialog({
                        title: "提示",
                        content: "密码修改成功",
                        okValue: "确定",
                        ok: function () {
                            top.topManager.closePage();
                        }
                    }).showModal();
                } else {
                    setTimeout(function () {
                        window.location = "/";
                    }, 2000);
                    dialog().content("密码修改成功").showModal();
                }

            }
        })
        return false;
    })

    // function modifypwd() {
    //     debugger;
    //     var token = cache.go("token");
    //     var httpRequest = new XMLHttpRequest();
    //     httpRequest.onreadystatechange = function () {
    //         if (httpRequest.readyState === XMLHttpRequest.DONE) {
    //             if (httpRequest.status === 200) {
    //                 console.log(httpRequest.responseText);
    //             } else {
    //                 console.log("----------------")
    //             }
    //         }
    //     }
    //     httpRequest.open("POST", "/api/account/modifypwd", true);
    //     httpRequest.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
    //     httpRequest.setRequestHeader("X-AuthToken", token);
    //     httpRequest.send(new FormData(document.querySelector('form')));

    // }
})

//判断输入密码的类型  
function CharMode(iN) {
    if (iN >= 48 && iN <= 57) //数字  
        return 1;
    if (iN >= 65 && iN <= 90) //大写  
        return 2;
    if (iN >= 97 && iN <= 122) //小写  
        return 4;
    else
        return 8;
}
//bitTotal函数  
//计算密码模式  
function bitTotal(num) {
    modes = 0;
    for (i = 0; i < 4; i++) {
        if (num & 1) modes++;
        num >>>= 1;
    }
    return modes;
}
//返回强度级别  
function checkStrong(sPW) {
    if (sPW.length < 6)
        return 0; //密码太短，不检测级别
    Modes = 0;
    for (i = 0; i < sPW.length; i++) {
        //密码模式  
        Modes |= CharMode(sPW.charCodeAt(i));
    }
    return bitTotal(Modes);
}

//显示颜色  
function pwStrength(pwd) {
    Dfault_color = "lightgrey"; //默认颜色
    L_color = "#FF0000"; //低强度的颜色，且只显示在最左边的单元格中
    M_color = "#FF9900"; //中等强度的颜色，且只显示在左边两个单元格中
    H_color = "#33CC00"; //高强度的颜色，三个单元格都显示
    if (pwd == null || pwd == "") {
        Lcolor = Mcolor = Hcolor = Dfault_color;
    } else {
        S_level = checkStrong(pwd);
        switch (S_level) {
            case 0:
                Lcolor = Mcolor = Hcolor = Dfault_color;
                break;
            case 1:
                Lcolor = L_color;
                Mcolor = Hcolor = Dfault_color;
                break;
            case 2:
                Lcolor = Mcolor = M_color;
                Hcolor = Dfault_color;
                break;
            default:
                Lcolor = Mcolor = Hcolor = H_color;
        }
    }
    document.getElementById("strength_L").style.background = Lcolor;
    document.getElementById("strength_M").style.background = Mcolor;
    document.getElementById("strength_H").style.background = Hcolor;
    return;
}

// 密码长度的检查
function pwdLength(dom) {
    if (dialog.get("pwdlength")) {
        dialog.get("pwdlength").close().remove();
    }
    if (dom.value && dom.value.length < 6) {
        tipDialog("pwdlength", '密码不得少于6位!', dom);
        return false;
    }
    if (dom.value && checkStrong(dom.value) < 2) {
        tipDialog("pwdlength", '新密码过于简单!', dom);
        return false;
    }
    return true;
}

function removeOriginalPwdDialog() {
    debugger;
    if (dialog.get("originalPwd")) {
        dialog.get("originalPwd").close().remove();
    }
    if (dialog.get("emptyPwd")) {
        dialog.get("emptyPwd").close().remove();
    }
}

// 重新输入密码的检查
function checkReenterPwd(dom) {
    if (dialog.get("reenterPwd")) {
        dialog.get("reenterPwd").close().remove();
    }
    if (dom.value && dom.value !== document.getElementById("newPwd").value) {
        tipDialog("reenterPwd", '两次输入的密码不一致!', dom);
        return false;
    }
    return true;
}

// 检查空值
function checkEmptyInput() {
    var ids = ["originalPwd", "newPwd", "reenterPwd"];
    var dom, b = true;
    for (i in ids) {
        dom = document.getElementById(String(ids[i]));
        if (dom.value === "") {
            tipDialog("emptyPwd", '不能为空!', dom);
            // setTimeout(function () {
            //     dialog.get("emptyPwd").close().remove();
            // }, 2000);
            return false;
        }
    }
    return true;
}

// 密码合法性检查
function checkPwd() {
    if (!checkEmptyInput()) {
        return false;
    }
    if (!pwdLength(document.getElementById("newPwd"))) {
        return false;
    }
    if (!checkReenterPwd(document.getElementById("reenterPwd"))) {
        return false;
    }
    return true;
}

function tipDialog(id, note, dom) {
    dialog({
        id: id,
        content: "<span class='error'>" + note + "</span>",
        align: "right"
    }).show(dom);
}